package com.wangbaokang.duanxin.tools;

import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.ContactsContract;

import java.io.InputStream;

/**
 * Created by wangbaokang on 2016/8/19 0019.
 */
public class Tools {

    /**
     * 通过电话号码查询联系人姓名name
     * @param context
     * @param number   要查询的电话号码
     * @return 返回联系人的姓名 或者为null表示联系人中无此联系人
     */
    public static String findNameByNumber(Context context, String number){
        String name = "";

        Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, number);
        Cursor cursor = context.getContentResolver().query(uri, new String[]{"display_name"}, null, null, null);

        if(cursor.getCount() == 0) {
            return null;
        }else {
            //cursor(游标)返回时默认指向是第一行的上一行 即-1行 但是cursor的内容是从第一行即0行开始的 所以cursor向下移动一行
            cursor.moveToNext();
            name = cursor.getString(0);
        }

        return name;
    }


    /**
     * 通过电话号码查询联系人Id
     * @param context
     * @param number   要查询的电话号码
     * @return 返回联系人的Id 或者为 -1 表示联系人中无此联系人
     */
    public static int findIdByNumber(Context context, String number){
        int contactId;

        Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, number);
        Cursor cursor = context.getContentResolver().query(uri, new String[]{"_id"}, null, null, null);

        if(cursor.getCount() == 0) {
            return -1;
        }else {
            //cursor(游标)返回时默认指向是第一行的上一行 即-1行 但是cursor的内容是从第一行即0行开始的 所以cursor向下移动一行
            cursor.moveToNext();
            contactId = cursor.getInt(0);
        }

        return contactId;
    }

    /**
     * 根据联系人的id 查询联系人的头像
     * @param context
     * @param contactId  联系人Id
     * @return 返回bitmap头像 如果有联系人但是没有头像返回null
     */
    public static Bitmap getFaceById(Context context, String contactId){
        Bitmap bitmap = null;


        Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, contactId);

        InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);

        if (inputStream == null) {
            return null;
        }else {
            bitmap = BitmapFactory.decodeStream(inputStream);
        }

        return bitmap;

    }

    /**
     * 根据会话ID删除会话内容
     * @param ctx
     * @param threadId
     * @return
     */
    public static int deleteThreadById(Context ctx,Integer threadId){

        int delete = ctx.getContentResolver().delete(MyConstants.URI_SMS, "thread_id = "+threadId, null);

        return delete;
    }

}
